package com.example.clientmiviamoviego4;

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

/**
 * Fragment che si occupa della visualizzazione di un messaggio di warning nel
 * caso in cui si presenti una situazione di errore.
 * 
 * @author Gang of Four
 * */
public class ErrorFragment extends Fragment {

	/**
	 * Riferimento all'oggetto utilizzato per la callback alla MainActivity.
	 * */
	private OnConnectedListener mListener;

	/**
	 * Metodo richiamato all'atto dell'istanziamento del fragment.
	 * */
	public static Fragment newInstance() {
		Fragment fragment = new ErrorFragment();
		return fragment;
	}

	/**
	 * Costruttore della classe ErrorFragment.
	 * */
	public ErrorFragment() {
	}

	/**
	 * Metodo richiamato dopo che la gerarchia di view viene associata al
	 * fragment.
	 * */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	}

	/**
	 * Metodo richiamato quando la gerarchia di view viene associata al
	 * fragment.
	 * */
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View rootView = inflater.inflate(R.layout.fragment_error, container,
				false);
		Button register_button = (Button) rootView
				.findViewById(R.id.button_reconnect);
		register_button.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				onButtonPressed();
			}

		});
		return rootView;
	}

	/**
	 * Metodo che definisce l'azione associata al pressione del tasto che prova
	 * la riconnessione al server.
	 * */
	public void onButtonPressed() {
		if (mListener != null) {
			mListener.onConnected();
		}
	}

	/**
	 * Metodo chiamato nel momento in cui il fragment viene associato
	 * all'activity.
	 * */
	@Override
	public void onAttach(Activity activity) {
		super.onAttach(activity);
		try {
			((MainActivity) activity)
					.onSectionAttached(getString(R.string.fragment_error));
			mListener = (OnConnectedListener) activity;
		} catch (ClassCastException e) {
			throw new ClassCastException(activity.toString()
					+ " must implement OnFragmentInteractionListener");
		}
	}

	/**
	 * Metodo chiamato nel momento in cui il fragment � stato disassociato
	 * dall'activity.
	 * */
	@Override
	public void onDetach() {
		super.onDetach();
		mListener = null;
	}

	/**
	 * Definizione dell'interfaccia relativa al listener che si occupa di
	 * effettuare il link tra l'oggetto mListener e la MainActivity.
	 * */
	public interface OnConnectedListener {
		public void onConnected();
	}

}
